<?php

class PostController extends CAdminController {

    public $layout = 'column2';

    /**
     * @var CActiveRecord the currently loaded data model instance.
     */
    private $_model;

    /**
     * @return array action filters
     */
    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {                
        return array(                        
        );
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'          
        $model = new Post('search');
        if (isset($_GET['Post']))
            $model->attributes = $_GET['Post'];
        $this->render('index', array(
            'model' => $model,
        ));
    }        

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate() {
        $model = new Post();
        if (isset($_POST['Post'])) {
            $model->attributes = $_POST['Post'];
            $model->category_id = $_POST['category_id'];       
            $model->tags = $_POST['Post']['tags'];
            $model->alt = $_POST['Post']['alt'];
            $model->meta_title = $_POST['Post']['meta_title'];
            $model->meta_keyword = $_POST['Post']['meta_keyword'];
            $model->meta_description = $_POST['Post']['meta_description']; 
            if (!empty($_FILES['main_image']) && $_FILES['main_image']['size'] > 0) {
                $filename = $_FILES['main_image']['name'];
                $pos = strrpos($filename, '.');
                $name = substr($filename, 0, $pos);
                $name = strtolower(str_replace(' ', '-', Myvietstring::removeVietChars($name)));
                $name = Myvietstring::removeInvalidCharacter($name);
                //$name = strlen(strlen($name) > 20) ? substr($name, 0, 20) : $name;
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                // $real_name = $name . '.' . $ext;
                //$name.= '-' . time();
                $name.= '.' . $ext;
                $fullpath = 'files/posts/' . $name;
                move_uploaded_file($_FILES['main_image']['tmp_name'], $fullpath);
                $model->main_image = $fullpath;
                $model->resizeImage(135,135);
                
//                $img = Yii::app()->simpleImage->load($fullpath);
//                $img->resizeToWidth(50);
//                $img->save('files/posts/50x50-' . $name);
                if (empty($model->slug)) {
                    $slug = Common::simpleSlug($model->title);
                    $slug = $slug . ".htm";
                }
                $tmp = Post::model()->find('slug ="' . $slug . '"');
                if (!empty($tmp)) {
                    $tmp1 = explode('.', $slug);
                    if (count($tmp1) > 1) {
                        $slug = $tmp1[0] . "-" . $tmp->id;
                        $slug = $slug . "." . $tmp1[1];
                    } else {
                        $slug = $slug . "-2";
                    }
                }
                $model->slug = $slug;
                if ($model->save()){  
                    Common::updateSitemap();
                    $this->redirect(array('update', 'id' => $model->id));
                }
            }else{
                Common::alert("Không có ảnh đại diện", Yii::app()->request->urlReferrer);
            }            
        }

        $this->render('create', array(
            'model' => $model,
        ));
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     */
    public function actionUpdate() {       
        $model = $this->loadModel();                
        if (isset($_POST['Post'])) {
            $model->attributes = $_POST['Post'];
            $model->category_id = $_POST['category_id'];   
            $model->tags = $_POST['Post']['tags'];
            $model->alt = $_POST['Post']['alt'];
            $model->meta_title = $_POST['Post']['meta_title'];
            $model->meta_keyword = $_POST['Post']['meta_keyword'];
            $model->meta_description = $_POST['Post']['meta_description'];
            if (!empty($_FILES['main_image']) && $_FILES['main_image']['size'] > 0) {
                $filename = $_FILES['main_image']['name'];
                $pos = strrpos($filename, '.');
                $name = substr($filename, 0, $pos);
                $name = strtolower(str_replace(' ', '-', Myvietstring::removeVietChars($name)));
                $name = Myvietstring::removeInvalidCharacter($name);
                //$name = strlen(strlen($name) > 20) ? substr($name, 0, 20) : $name;
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                // $real_name = $name . '.' . $ext;
                $name.= '-' . time();
                $name.= '.' . $ext;
                $fullpath = 'files/posts/' . $name;
                move_uploaded_file($_FILES['main_image']['tmp_name'], $fullpath);
                $model->main_image = $fullpath;
                $model->resizeImage(135,135);
                
//                $img = Yii::app()->simpleImage->load($fullpath);
//                $img->resizeToWidth(50);
//                $img->save('files/posts/50x50-' . $name);
            }
            if (empty($model->slug)) {
                $slug = Common::simpleSlug($model->title);
                $slug = $slug . ".htm";
            }else{
                $slug = $model->slug;
            }
            $tmp = Post::model()->find('id != '.$model->id.' AND slug ="' . $slug . '"');
            if (!empty($tmp)) {
                $tmp1 = explode('.', $slug);
                if (count($tmp1) > 1) {
                    $slug = $tmp1[0] . "-" . $model->id;
                    $slug = $slug . "." . $tmp1[1];
                } else {
                    $slug = $slug . "-2";
                }
            }
            
            $model->slug = $slug;
            if ($model->save()){
                Common::updateSitemap();
                Common::alert("Cập nhật thành công!", Yii::app()->request->urlReferrer);                
            }
        }

        $this->render('update', array(
            'model' => $model,
        ));
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     */
    public function actionDelete() {
        if (Yii::app()->request->isPostRequest) {
            // we only allow deletion via POST request
            $this->loadModel()->delete();

            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(array('index'));
        }
        else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }             

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     */
    public function loadModel() {
        if ($this->_model === null) {                 
            if (isset($_GET['id'])) {                                    
                $this->_model = Post::model()->findByPk($_GET['id']);
            }
            if ($this->_model === null)
                throw new CHttpException(404, 'The requested page does not exist.');
        }        
        return $this->_model;
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
        if ($error = Yii::app()->errorHandler->error) {
            if (Yii::app()->request->isAjaxRequest)
                echo $error['message'];
            else
                $this->render('error', $error);
        }
    }

}